﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Aeroporto.modelo;
using Aeroporto.bd;
using Aeroporto.controle;
using System.Collections;
namespace Aeroporto.visao
{
    public partial class formCadastroAeroporto : Form
    {
        private AeroportoControl aeroporto_control = new AeroportoControl();

        public formCadastroAeroporto()
        {
            InitializeComponent();
        }

        private void formCadastroAeroporto_Load(object sender, EventArgs e)
        {
            lista_dados();
            limpar();
        }

        private void la_tabela_Click(object sender, EventArgs e)
        {

        }

        private void btnLimpar_Click(object sender, EventArgs e)
        {
            limpar();
        }

        private void limpar()
        {
            txtCodIata.Text = "";
            txtCodIcao.Text = "";
            txtNome.Text = "";
            txtPais.Text = "";
            txtPesquisa.Text = "";
            txtCidade.Text = "";
        }


        private void atualiza_campos()
        {
            int linha = grid_aeroporto.CurrentRow.Index;

            txtCodIata.Text = grid_aeroporto[0,linha].Value.ToString();
            txtCodIcao.Text = grid_aeroporto[1, linha].Value.ToString();
            txtNome.Text = grid_aeroporto[2, linha].Value.ToString();
            txtCidade.Text = grid_aeroporto[3, linha].Value.ToString();
            txtPais.Text = grid_aeroporto[4, linha].Value.ToString();

        }

        private void lista_dados()
        {
            try
            {
                grid_aeroporto.DataSource = aeroporto_control.lista_dados("aeroporto");
                grid_aeroporto.Columns["cod_iata"].HeaderText = "Cod_iata";
                grid_aeroporto.Columns["cod_icao"].HeaderText = "Cod_icao";
                grid_aeroporto.Columns["nome"].HeaderText = "Nome";
                grid_aeroporto.Columns["cidade"].HeaderText = "Cidade";
                grid_aeroporto.Columns["pais"].HeaderText = "Pais";
                atualiza_campos();
                grid_aeroporto.ReadOnly = true;
            }
            catch(Exception e){
                MessageBox.Show("Erro na listagem do grid:" + e);
            }
        }

        private void btnInserir_Click(object sender, EventArgs e)
        {
            MyMessageBox message_box = aeroporto_control.valida_insert_aeroporto(txtCodIata.Text,txtCodIcao.Text,txtNome.Text,txtCidade.Text,txtPais.Text);

            MessageBox.Show(message_box.String1,message_box.String2);

            switch(message_box.String2){
                case "Aeroporto ja cadastrado" :
                    txtCodIata.Focus();
                    break;

                case "Cadastrado" :
                    limpar();
                    lista_dados();
                    break;
            }
        }

       
        private void btnDeletar_Click(object sender, EventArgs e)
        {
            if (txtCodIata.Text == "" && txtCodIcao.Text == "" && txtNome.Text == "" && txtCidade.Text == "" && txtPais.Text == "")
            {
                MessageBox.Show("Escolha um aeroporto na tabela ao lado!");
                return;
            }
            else
            {
                ArrayList chaves_primaria = new ArrayList();

                foreach(DataGridViewRow r in grid_aeroporto.SelectedRows){
                    chaves_primaria.Add(r.Cells[0].Value.ToString());
                }

                if(MessageBox.Show("Tem certeza que deseja exlcuir " + chaves_primaria.Count + " aeroporto(s)","Aeroporto",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){
                    MyMessageBox message_box = aeroporto_control.exclui_aeroporto(chaves_primaria);
                    MessageBox.Show(message_box.String1,message_box.String2);
                    lista_dados();
                }
            }
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            string cod_antigo = grid_aeroporto[0, grid_aeroporto.CurrentCell.RowIndex].Value.ToString();
            MyMessageBox mb = aeroporto_control.valida_update_aeroporto(
                txtCodIata.Text, txtCodIcao.Text, txtNome.Text, txtCidade.Text, txtPais.Text, cod_antigo);

            MessageBox.Show(mb.String1,mb.String2);

            lista_dados();
        }

        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            grid_aeroporto.DataSource = aeroporto_control.pesquisar_nome(txtPesquisa.Text);
        }

        private void grid_aeroporto_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            atualiza_campos();
        }
    }
}
